package org.mall.modules.product.service;

import org.mall.common.aspect.annotation.InEnum;
import org.mall.common.constant.CommonStatusEnum;
import org.mall.modules.pojo.product.bo.ProductAttrBO;
import org.mall.modules.pojo.product.bo.ProductAttrPageBO;
import org.mall.modules.pojo.product.bo.ProductAttrSimpleBO;
import org.mall.modules.pojo.product.bo.ProductAttrValueBO;
import org.mall.modules.pojo.product.dto.*;

import java.util.List;

public interface ProductAttrService {

    ProductAttrPageBO getProductAttrPage(ProductAttrPageDTO productAttrPageDTO);

    /**
     * 获得规格属性数组
     *
     * 注意，该方法过滤了禁用的规格
     *
     * @return 规格属性数组
     */
    List<ProductAttrSimpleBO> getProductAttrList();

    ProductAttrBO addProductAttr(String adminId, ProductAttrAddDTO productAttrAddDTO);

    Boolean updateProductAttr(String adminId, ProductAttrUpdateDTO productAttrUpdateDTO);

    Boolean updateProductAttrStatus(String adminId, Integer productAttrId,
                                    @InEnum(value = CommonStatusEnum.class, message = "修改状态必须是 {value}") Integer status);

    ProductAttrValueBO addProductAttrValue(String adminId, ProductAttrValueAddDTO productAttrValueAddDTO);

    Boolean updateProductAttrValue(String adminId, ProductAttrValueUpdateDTO productAttrValueUpdateDTO);

    Boolean updateProductAttrValueStatus(String adminId, Integer productAttrValueId,
                                         @InEnum(value = CommonStatusEnum.class, message = "修改状态必须是 {value}") Integer status);

}
